package com.wcs.exam.dao.impl.mapper.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 考试用户
 * </p>
 *
 * @author wcs
 * @since 2025-03-13
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("exam_user")
public class ExamUser implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 考试ID
     */
    private Long examId;

    /**
     * 考试类型
     */
    private Integer examType;

    /**
     * 长期有效(0：否，1：是)
     */
    private Boolean longEffective;

    /**
     * 开始时间
     */
    private LocalDateTime beginTime;

    /**
     * 结束时间
     */
    private LocalDateTime endTime;

    /**
     * 已付款(0：否、1：是)
     */
    private Boolean payment;

    /**
     * 报名方式(1：自主报名、2：后台操作)
     */
    private Integer registrationWay;

    /**
     * 报名时间
     */
    private LocalDateTime registrationTime;

    /**
     * 订单号(自主报名付费情况下不为空)
     */
    private String orderNo;

    /**
     * 考试记录ID
     */
    private Long examRecordId;

    /**
     * 用户得分(交卷后更新)
     */
    private BigDecimal userScore;

    /**
     * 考试成绩设置(1：记录学员最高成绩、2：记录学员最新成绩)
     */
    private Integer examScoreType;

    /**
     * 考试开考时间(模拟考试，考试结束后才更新)
     */
    private LocalDateTime examStartTime;

    /**
     * 考试结束时间(模拟考试，考试结束后才更新)
     */
    private LocalDateTime examEndTime;

    /**
     * 交卷时间(交卷后更新)
     */
    private LocalDateTime examSubmitTime;

    /**
     * 用户作答时间(单位：秒，交卷后更新)
     */
    private Integer userAnswerTime;

    /**
     * 考试状态(1:未考、2:考试中、3:考试完成、4:及格、5:不及格)
     */
    private Integer userExamStatus;

    /**
     * 评阅状态(1:未知、2:待阅卷、3:阅卷中、4:已阅卷)
     */
    private Integer userEvaluationStatus;

    /**
     * 报名考试-是否已提醒-开考前通知(0:否、1:是)
     */
    private Boolean beforeRemind;

    /**
     * 报名考试-是否已提醒-成绩公布通知(0:否、1:是)
     */
    private Boolean publishedScoreRemind;

    /**
     * 报名考试-考试开考前人脸识别错误次数
     */
    private Integer faceIdErrorCount;

    /**
     * 报名考试-人脸抓拍检测错误次数
     */
    private Integer faceCaptureErrorCount;

    /**
     * 报名考试-用户切屏次数
     */
    private Integer userSwitchScreenCount;

    /**
     * 用户最新得分
     */
    private BigDecimal userNewestScore;

    /**
     * 用户最高得分
     */
    private BigDecimal userHighestScore;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 创建时间
     */
    private LocalDateTime gmtCreate;

    /**
     * 修改时间
     */
    private LocalDateTime gmtModified;
}
